library("nflfastR")
library("knitr")
library("qs")
library("glue")
library("skimr")
library("gt")
library("tidyverse")

Datasets

Rosters

The ‘rosters’ dataset provides fantasy relevant player data and ids of from 2010 to 2020. This dataset is primarily used to gather positional data to join with stats. The ids provided may also be utilized to further join outside data.

rosters

Games

The ‘games’ dataset provides game data and results from 2010 to 2020.

Weekly

The ‘weekly’ dataset provides weekly player stats, snaps, injury data, and further advanced metrics that will be added down the road. Each observation is unique by a player_id and game_id that unites the season, week, home team, and away team.

weekly

Season

The ‘season’ dataset aggregates the ‘weekly’ dataset by season.

season

Usage

Season Averages

season_avgs <-
  weekly %>%
  filter(n() > 1) %>%
  group_by(player_id, season) %>%
  summarise(across(
    .cols = c(
      completions:fantasy_points_ppr,
      -(catch_rate:short_catch_rate),
      total_snaps, offense_snaps, special_teams_snaps,
    ),
    .fns = mean,
    na.rm = TRUE,
    .names = "{.col}_pg"
  )) %>%
  mutate(across(where(is.numeric), round, 2))

Quarterbacks

Running Backs

2021 Season
# 2021 coaches
games[1:32,] %>% select(season, team, team_coach)
LS0tCnRpdGxlOiAiTkZMIERhdGEiCmF1dGhvcjogIk5hdGUgTGV3aXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKYGBge3IgbG9hZCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbGlicmFyeSgibmZsZmFzdFIiKQpsaWJyYXJ5KCJza2ltciIpCmxpYnJhcnkoImd0IikKbGlicmFyeSgidGlkeXZlcnNlIikKYGBgCgpgYGB7ciBpbXBvcnQsIGluY2x1ZGU9RkFMU0V9CiMgZnJvbSAnZ2FtZS1kYXRhLlInCnJhd193ZWVrbHlfZGF0YSA8LSByZWFkX2NzdigiLi9kYXRhX291dHB1dC93ZWVrbHlfZGF0YS5jc3YiKQpyYXdfc2Vhc29uX2RhdGEgPC0gcmVhZF9jc3YoIi4vZGF0YV9vdXRwdXQvc2Vhc29uX2RhdGEuY3N2IikKCiMgZnJvbSAncm9zdGVycy5SJwpyYXdfcm9zdGVycyA8LSByZWFkX2NzdigiLi9kYXRhX291dHB1dC9yb3N0ZXJzLmNzdiIpCgojIGZyb20gJ3BsYXllci1zdGF0cy5SJwpyYXdfd2Vla2x5X3N0YXRzIDwtIHJlYWRfY3N2KCIuL2RhdGFfb3V0cHV0L3dlZWtseV9qb2luZWQuY3N2IikKcmF3X3NlYXNvbl9zdGF0cyA8LSByZWFkX2NzdigiLi9kYXRhX291dHB1dC9vdmVyYWxsX2pvaW5lZC5jc3YiKQoKIyBmcm9tICdnYW1lcy5SJwpyYXdfZ2FtZXMgPC0gcmVhZF9jc3YoIi4vZGF0YV9vdXRwdXQvZ2FtZXMuY3N2IikKYGBgCgpgYGB7ciBjbGVhbiwgaW5jbHVkZT1GQUxTRX0KIyB3ZWVrbHkKd2Vla2x5X3N0YXRzIDwtCiAgcmF3X3dlZWtseV9zdGF0cyAlPiUKICBzZWxlY3QoMTo1LCBjb21wbGV0aW9uczpmYW50YXN5X3BvaW50c19wcHIsIC1wbGF5ZXJfbmFtZSkgJT4lCiAgYXJyYW5nZSgtc2Vhc29uLCBwbGF5ZXJfaWQsIHdlZWspCgp3ZWVrbHlfZGF0YSA8LSByYXdfd2Vla2x5X2RhdGEgJT4lIHNlbGVjdCgtcmVjZW50X3RlYW0pCgojIG92ZXJhbGwKc2Vhc29uX3N0YXRzIDwtCiAgcmF3X3NlYXNvbl9zdGF0cyAlPiUKICBzZWxlY3QoMTo1LCBjb21wbGV0aW9uczpmYW50YXN5X3BvaW50c19wcHIsIG53X3JrOnN0ZF9ya19vdnIsIC1wbGF5ZXJfbmFtZSkgJT4lCiAgYXJyYW5nZSgtc2Vhc29uLCBwbGF5ZXJfaWQpCgpzZWFzb25fZGF0YSA8LSByYXdfc2Vhc29uX2RhdGEgJT4lIHNlbGVjdCgtZ2FtZXMpCgojIG90aGVyCnJvc3RlcnMgPC0gcmF3X3Jvc3RlcnMgJT4lCiAgcmVuYW1lKHBsYXllcl9pZCA9IGdzaXNfaWQpICU+JQogIG11dGF0ZShmYW50YXN5X3Bvc2l0aW9uID0gaWZlbHNlKHBvc2l0aW9uICVpbiUgYygiUUIiLCAiV1IiLCAiVEUiLCAiUkIiLCAiRkIiKSwgcG9zaXRpb24sIE5BKSkgJT4lCiAgc2VsZWN0KAogICAgcGxheWVyX2lkLAogICAgc2Vhc29uLAogICAgZnVsbF9uYW1lLAogICAgcG9zaXRpb24sCiAgICBzdGF0dXMsCiAgICB5ZWFyc19leHA6c3RhdHVzLAogICAgZmFudGFzeV9wb3NpdGlvbiwKICAgIGRlcHRoX2NoYXJ0X3Bvc2l0aW9uLAogICAgbndfcG9zaXRpb24KICApICU+JQogIGZpbHRlcighaXMubmEoZmFudGFzeV9wb3NpdGlvbikpICU+JQogIGFycmFuZ2UoLXNlYXNvbiwgcG9zaXRpb24sIHBsYXllcl9pZCkKCmdhbWVzIDwtIHJhd19nYW1lcyAlPiUgZmlsdGVyKHNlYXNvbiA+PSAyMDEwKSAlPiUgYXJyYW5nZSgtc2Vhc29uKQpgYGAKCmBgYHtyIGpvaW4sIGluY2x1ZGU9RkFMU0V9CiMgam9pbiBhbmQgZmlsdGVyIHRvIGZhbnRhc3kgcmVsZXZhbnQgcG9zaXRpb25zCnNlYXNvbiA8LSBzZWFzb25fc3RhdHMgJT4lCiAgbGVmdF9qb2luKAogICAgcm9zdGVycywgYnkgPSBjKCJwbGF5ZXJfaWQiLCAic2Vhc29uIikKICApICU+JQogIGxlZnRfam9pbihzZWFzb25fZGF0YSwgYnkgPSBjKCJwbGF5ZXJfaWQiLCAic2Vhc29uIikpICU+JSAKICBmaWx0ZXIoIWlzLm5hKGZhbnRhc3lfcG9zaXRpb24pKQoKd2Vla2x5IDwtIHdlZWtseV9zdGF0cyAlPiUKICBsZWZ0X2pvaW4oCiAgICByb3N0ZXJzLCBieSA9IGMoInBsYXllcl9pZCIsICJzZWFzb24iKQogICkgJT4lCiAgbGVmdF9qb2luKHdlZWtseV9kYXRhLCBieSA9IGMoInBsYXllcl9pZCIsICJzZWFzb24iLCAid2VlayIpKSAlPiUgCiAgZmlsdGVyKCFpcy5uYShmYW50YXN5X3Bvc2l0aW9uKSkKCiMgY3JlYXRlIGlkIGNvbHMKaWRfY29scyA8LSBjKCJwbGF5ZXJfaWQiLCAic2Vhc29uIiwgImZ1bGxfbmFtZSIsICJyZWNlbnRfdGVhbSIsICJwb3NpdGlvbiIpCgojIHJlYXJyYW5nZQpzZWFzb24gPC0gc2Vhc29uICU+JSBzZWxlY3QoaWRfY29scywgZHBseXI6OmV2ZXJ5dGhpbmcoKSkgJT4lIAogIG11dGF0ZShhY3Jvc3Mod2hlcmUoaXMubnVtZXJpYyksIHJvdW5kLCAyKSkKd2Vla2x5IDwtIHdlZWtseSAlPiUgc2VsZWN0KGlkX2NvbHMsIGRwbHlyOjpldmVyeXRoaW5nKCkpICU+JSAKICByZWxvY2F0ZSh3ZWVrLCAuYWZ0ZXIgPSBzZWFzb24pICU+JSAKICAgIG11dGF0ZShhY3Jvc3Mod2hlcmUoaXMubnVtZXJpYyksIHJvdW5kLCAyKSkKYGBgCgojIyBEYXRhc2V0cwoKIyMjIFJvc3RlcnMKClRoZSAncm9zdGVycycgZGF0YXNldCBwcm92aWRlcyBmYW50YXN5IHJlbGV2YW50IHBsYXllciBkYXRhIGFuZCBpZHMgb2YgZnJvbSAyMDEwIHRvIDIwMjAuIFRoaXMgZGF0YXNldCBpcyBwcmltYXJpbHkgdXNlZCB0byBnYXRoZXIgcG9zaXRpb25hbCBkYXRhIHRvIGpvaW4gd2l0aCBzdGF0cy4gVGhlIGlkcyBwcm92aWRlZCBtYXkgYWxzbyBiZSB1dGlsaXplZCB0byBmdXJ0aGVyIGpvaW4gb3V0c2lkZSBkYXRhLgpgYGB7ciByb3N0ZXJzfQpyb3N0ZXJzCmBgYAoKCiMjIyBHYW1lcwoKVGhlICdnYW1lcycgZGF0YXNldCBwcm92aWRlcyBnYW1lIGRhdGEgYW5kIHJlc3VsdHMgZnJvbSAyMDEwIHRvIDIwMjAuCmBgYHtyIGdhbWVzfQpnYW1lcwpgYGAKCgojIyMgV2Vla2x5CgpUaGUgJ3dlZWtseScgZGF0YXNldCBwcm92aWRlcyB3ZWVrbHkgcGxheWVyIHN0YXRzLCBzbmFwcywgaW5qdXJ5IGRhdGEsIGFuZCBmdXJ0aGVyIGFkdmFuY2VkIG1ldHJpY3MgdGhhdCB3aWxsIGJlIGFkZGVkIGRvd24gdGhlIHJvYWQuIEVhY2ggb2JzZXJ2YXRpb24gaXMgdW5pcXVlIGJ5IGEgcGxheWVyX2lkIGFuZCBnYW1lX2lkIHRoYXQgdW5pdGVzIHRoZSBzZWFzb24sIHdlZWssIGhvbWUgdGVhbSwgYW5kIGF3YXkgdGVhbS4KCmBgYHtyfQp3ZWVrbHkKYGBgCgoKIyMjIFNlYXNvbgoKVGhlICdzZWFzb24nIGRhdGFzZXQgYWdncmVnYXRlcyB0aGUgJ3dlZWtseScgZGF0YXNldCBieSBzZWFzb24uCgpgYGB7cn0Kc2Vhc29uCmBgYAoKCiMjIFVzYWdlCgoKIyMjIFNlYXNvbiBBdmVyYWdlcwpgYGB7cn0Kc2Vhc29uX2F2Z3MgPC0KICB3ZWVrbHkgJT4lCiAgZmlsdGVyKG4oKSA+IDEpICU+JQogIGdyb3VwX2J5KHBsYXllcl9pZCwgc2Vhc29uKSAlPiUKICBzdW1tYXJpc2UoYWNyb3NzKAogICAgLmNvbHMgPSBjKAogICAgICBjb21wbGV0aW9uczpmYW50YXN5X3BvaW50c19wcHIsCiAgICAgIC0oY2F0Y2hfcmF0ZTpzaG9ydF9jYXRjaF9yYXRlKSwKICAgICAgdG90YWxfc25hcHMsIG9mZmVuc2Vfc25hcHMsIHNwZWNpYWxfdGVhbXNfc25hcHMsCiAgICApLAogICAgLmZucyA9IG1lYW4sCiAgICBuYS5ybSA9IFRSVUUsCiAgICAubmFtZXMgPSAiey5jb2x9X3BnIgogICkpICU+JQogIG11dGF0ZShhY3Jvc3Mod2hlcmUoaXMubnVtZXJpYyksIHJvdW5kLCAyKSkKYGBgCgoKIyMjIFF1YXJ0ZXJiYWNrcwoKYGBge3J9CnNlYXNvbiAlPiUgCiAgZmlsdGVyKHBvc2l0aW9uID09ICJRQiIsIHNlYXNvbiA9PSAyMDIwKSAlPiUgCiAgc2VsZWN0KG53X3JrLCBpZF9jb2xzLCBjb21wbGV0aW9uczppbnRfdGRzLCAtcGxheWVyX2lkKSAlPiUgCiAgYXJyYW5nZShud19yaykKYGBgCgoKIyMjIFJ1bm5pbmcgQmFja3MKYGBge3J9CnNlYXNvbiAlPiUgCiAgZmlsdGVyKHBvc2l0aW9uID09ICJSQiIsIHNlYXNvbiA9PSAyMDIwKSAlPiUgCiAgc2VsZWN0KG53X3JrLCBpZF9jb2xzLCBjYXJyaWVzOnJ1c2hpbmdfdGRzXzUwLCAtcGxheWVyX2lkKSAlPiUgCiAgYXJyYW5nZShud19yaykKYGBgCgoKCgojIyMjIyAyMDIxIFNlYXNvbgoKYGBge3J9CiMgMjAyMSBjb2FjaGVzCmdhbWVzWzE6MzIsXSAlPiUgc2VsZWN0KHNlYXNvbiwgdGVhbSwgdGVhbV9jb2FjaCkKYGBg